home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / ewl / ewl_tree.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  4KB  |  131 lines

  1. #ifndef _EWL_TREE_H
  2. #define _EWL_TREE_H
  3.  
  4. /**
  5.  * @file ewl_tree.h
  6.  * @defgroup Ewl_Tree Tree: A Widget for List or Tree Layout
  7.  * @brief Defines a widget for laying out other widgets in a tree or list like
  8.  * manner.
  9.  *
  10.  * @{
  11.  */
  12.  
  13. /**
  14.  * @themekey /tree/file
  15.  * @themekey /tree/group
  16.  */
  17.  
  18. typedef struct Ewl_Tree Ewl_Tree;
  19.  
  20. /**
  21.  * @def EWL_TREE(t)
  22.  * Typecasts a pointer to an Ewl_Tree pointer.
  23.  */
  24. #define EWL_TREE(t) ((Ewl_Tree *)t)
  25.  
  26. /**
  27.  * @struct Ewl_Tree
  28.  * The tree is a columnar listing, where items in the list may be nested below
  29.  * other items.
  30.  */
  31. struct Ewl_Tree
  32. {
  33.     Ewl_Container  container;  /**< Inherit from Ewl_Container */
  34.  
  35.     unsigned short ncols;      /**< Number of columns in tree */
  36.     Ewl_Widget    *header;     /**< Array of widgets in the header */
  37.     Ewl_Widget    *scrollarea; /**< Scrollable area of rows */
  38.     Ecore_List    *selected;   /**< The currently selected rows */
  39.     Ewl_Tree_Mode  mode;       /**< Mode for selecting rows */
  40.     unsigned int   headers_visible; /**< Are the headers visible */
  41. };
  42.  
  43. typedef struct Ewl_Tree_Node Ewl_Tree_Node;
  44.  
  45. /**
  46.  * @def EWL_TREE_NODE(t)
  47.  * Typecasts a pointer to an Ewl_Tree_Node pointer.
  48.  */
  49. #define EWL_TREE_NODE(t) ((Ewl_Tree_Node *)t)
  50.  
  51. /*
  52.  * The tree_node exists for each row, at this level the tree_node contains rows
  53.  * that contain cells which display the data.
  54.  */
  55. struct Ewl_Tree_Node
  56. {
  57.     Ewl_Container container; /**< Inherit from Ewl_Container */
  58.     Ewl_Tree *tree; /**< Pointer to the tree this is inside */
  59.     Ewl_Widget *row; /**< The child row */
  60.     Ewl_Widget *handle; /**< The child row */
  61.     Ewl_Tree_Node_Flags expanded; /**< Indicator of expansion state */
  62. };
  63.  
  64. /*
  65.  * Node creation/initialization functions.
  66.  */
  67. Ewl_Widget     *ewl_tree_node_new(void);
  68. int          ewl_tree_node_init(Ewl_Tree_Node *tree_node);
  69.  
  70. /*
  71.  * Node state modifying functions
  72.  */
  73. void          ewl_tree_node_collapse(Ewl_Tree_Node *tree);
  74. void          ewl_tree_node_expand(Ewl_Tree_Node *tree);
  75.  
  76. /*
  77.  * Tree creation/initialization functions.
  78.  */
  79. Ewl_Widget     *ewl_tree_new(unsigned short columns);
  80. int          ewl_tree_init(Ewl_Tree *tree, unsigned short columns);
  81.  
  82. void          ewl_tree_headers_set(Ewl_Tree *tree, char **headers);
  83. void           ewl_tree_columns_set(Ewl_Tree *tree, unsigned short columns);
  84.  
  85. void        ewl_tree_headers_visible_set(Ewl_Tree *tree, unsigned int visible);
  86. unsigned int    ewl_tree_headers_visible_get(Ewl_Tree *tree);
  87.  
  88.  
  89. Ecore_List     *ewl_tree_selected_get(Ewl_Tree *tree);
  90. void          ewl_tree_selected_clear(Ewl_Tree *tree);
  91. Ewl_Widget    *ewl_tree_row_column_get(Ewl_Row *row, int i);
  92.  
  93. Ewl_Tree_Mode       ewl_tree_mode_get(Ewl_Tree *tree);
  94. void          ewl_tree_mode_set(Ewl_Tree *tree, Ewl_Tree_Mode mode);
  95.  
  96. Ewl_Widget     *ewl_tree_row_add(Ewl_Tree *tree, Ewl_Row *prow,
  97.                          Ewl_Widget **children);
  98. Ewl_Widget     *ewl_tree_text_row_add(Ewl_Tree *tree, Ewl_Row *prow, char **text);
  99. Ewl_Widget     *ewl_tree_entry_row_add(Ewl_Tree *tree, Ewl_Row *prow, char **text);
  100.  
  101. void          ewl_tree_row_destroy(Ewl_Tree *tree, Ewl_Row *row);
  102. void          ewl_tree_row_expand_set(Ewl_Row *row, Ewl_Tree_Node_Flags expanded);
  103. Ewl_Widget     *ewl_tree_row_find(Ewl_Tree *tree, int row);
  104.  
  105. /*
  106.  * Internally used callbacks, override at your own risk.
  107.  */
  108. void ewl_tree_node_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  109. void ewl_tree_node_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  110. void ewl_tree_node_toggle_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  111.  
  112. void ewl_tree_node_child_show_cb(Ewl_Container *c, Ewl_Widget *w);
  113. void ewl_tree_node_child_hide_cb(Ewl_Container *c, Ewl_Widget *w);
  114. void ewl_tree_node_resize_cb(Ewl_Container *c, Ewl_Widget *w, int size,
  115.                              Ewl_Orientation o);
  116.  
  117. void ewl_tree_row_select_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  118. void ewl_tree_row_hide_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  119. void ewl_tree_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  120. void ewl_tree_header_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  121. void ewl_tree_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  122. void ewl_tree_hscroll_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  123. void ewl_tree_child_resize_cb(Ewl_Container *c);
  124. void ewl_tree_node_child_add_cb(Ewl_Container *c, Ewl_Widget *w);
  125.  
  126. /**
  127.  * @}
  128.  */
  129.  
  130. #endif
  131.